In a communications system, channel coding is generally used to improve reliability of data transmission, so as to ensure communication quality. A polar code (polar code) is an encoding manner that can achieve a Shannon capacity and has low coding-decoding complexity. The polar code is a linear block code. A generator matrix of the polar code is GN., and an encoding process of the polar code is x1N=u1NGN., where GN.=BNF⊕n, a code length is N=2n, and n≥0.
Herein,
      F    =          [                                    1                                0                                                1                                1                              ]        ,and BN is a transposed matrix, for example, a bit reversal (bit reversal) matrix.
F⊕n is a Kronecker power (Kronecker power) of F, and is defined as F⊕n=F⊕F⊕(n-1). The polar code may be represented by a coset code (N, K, A, uAc), and an encoding process of the polar code is x1N=uAGN.(A)⊕uAcGN.(AC). Herein, A is a set of information (information) bit indexes, GN.(A) is a sub-matrix obtained by using a row corresponding to an index in the set A in GN., and GN.(AC) is a sub-matrix obtained by using a row corresponding to an index in a set AC in GN.. uAc is frozen (frozen) bits, where a quantity of the frozen bits is (N−K), and the frozen bits are known bits. For simplicity, these frozen bits may be set to 0.
A conventional random (quasi-random) puncturing hybrid automatic repeat request (HARQ) technology may be used for the polar code. The so-called random (quasi-random) puncturing is randomly (quasi-randomly) selecting a location for puncturing. At a receive end, an LLR at a puncturing location is set to 0, and a mother code decoding module and method are still used. In this random (quasi-random) puncturing manner, a frame error rate is relatively high, and HARQ performance is relatively poor.